package gold.digger;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by fanzhenyu02 on 2020/6/27.
 * common problem solver template.
 */
public class LC458 {
    public long startExecuteTime = System.currentTimeMillis();


//思路：  一个猪代表一个维度
//       例如：两头猪代表两个维度,一头猪代表行row,一头猪代表列column
//             通过minutesToTest/minutesToDie获取可以测试的轮数.
//             如：我们有25个桶,5行5列.
//                 第1次,测试第1行,第1列
//                 第2次,测试第2行,第2列 ......
//                 行猪死在第3次,列猪死在第2次,说明第3行第2列的桶是***
//                 实际上,并不用测试满5次,第4次时就可以确定答案了
//                 如果测试完第4次后,行猪和列猪都没有死,说明第5行第5列的桶是***,而无需额外的测试
//             所以每一个维度的最大值为minutesToTest/minutesToDie+1
//             那么我们只需要确定需要有多少个维度(猪)能够满足条件即可


    class Solution {
        public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
            int pigs = 0;
            int maxRound = minutesToTest / minutesToDie + 1;
            while (Math.pow(maxRound, pigs) < buckets) {
                pigs++;
            }
            return pigs;
        }
    }

    public void run() {
        Solution solution = new Solution();
        List<Integer> list = new ArrayList<>();
        System.out.println(solution.toString());
    }

    public static void main(String[] args) throws Exception {
        LC458 an = new LC458();
        an.run();

        System.out.println("\ncurrent solution total execute time: " + (System.currentTimeMillis() - an.startExecuteTime) + " ms.");
    }
}
